#include <iostream>
#include <map>
#include <string>
#include <ctime>
// template <typename T>
// void Print(const T &v)
// {
//     for (auto ite = v.begin(); ite != v.end(); ite++)
//     {
//         std::cout << *ite << " ";
//     }
//     std::cout << std::endl;
// }

int main()
{
    // std::pair<int,std::string> p = {1,"zhangsan"};
    // std::pair<int,std::string> p = std::make_pair<int,std::string>(1,"zhanghsam");
    // auto p = std::make_pair(1, std::string("zhanghsam"));
    // std::cout << p.first << " " << p.second << std::endl;

    // map容器的键值唯一
    // std::map<int, std::string> m;
    // m.insert({1, "zhangsan"});
    // m.insert(std::make_pair(3, "lisi"));
    // m.insert(std::pair<int, std::string>(2, "wangwu"));
    // 存在即修改
    // 不存在就新建
    // m[2] = "wangwu";
    // m[4] = "zhaoliu";

    // for (auto ite = m.begin(); ite != m.end(); ite++)
    // {
    //     std::cout << ite->first << " " << ite->second << std::endl;
    // }

    // auto ite = m.find(1);
    // if (ite == m.end())
    // {
    //     std::cout << "没找到!\n";
    // }
    // else
    //     std::cout << ite->second << std::endl;

    //
    // auto node = m.extract(2);
    // m.insert(std::move(node));
    // m.erase(1);
    // m.erase(m.find(2));
    // for (auto ite = m.begin(); ite != m.end(); ite++)
    // {
    //     std::cout << ite->first << " " << ite->second << std::endl;
    // }


    srand(time(nullptr));
    int a[100];
    for (int i = 0; i < 100; i++)
    {
        a[i] = rand() % 10 + 1;
        std::cout << a[i] << " ";
    }
    std::cout << std::endl;
    //求出出现次数最多的数  输出它的值和它的下标
    std::map<int,int> m;
    for(int i = 0;i<100;i++)
    {
        m[a[i]]++;
    }
    auto Maxite = m.begin();
    for(auto ite = m.begin();ite!=m.end();ite++)
    {
        if(ite->second > Maxite->second)
        {
            Maxite = ite;
        }
        std::cout<<ite->first<<" " << ite->second <<std::endl;
    }
    std::cout<<Maxite->first<<" " << Maxite->second <<std::endl;

    return 0;
}